The present invention relates in general to network security, and, in particular, to authentication and authorization for services delivered over a network.
For many years, network technology has enabled the sharing of, and remote access to, computing resources around the world. One computer can readily exchange data with a computer down the hall or in another country. Of course, it did not take long for the business world to harness the power of global networks, and network-technology has fueled the growth of an entire new industry focused on delivering services across these networks.
Commonly referred to as “web services,” “application services,” or “web service applications,” network services typically expose existing business functionality over networks in a controlled environment and allow multiple, applications to interact with each other. Web service applications use standards such as Extensible Markup Language (XML), Simple Object Access Protocol (SOAP), and Hypertext Transfer Protocol (HTTP) that are widely available and accepted to facilitate interaction across networks. XML provides a language to tag data so that the various components of a web service application can understand the request. SOAP is a method of packaging data before transmitting it across a network. HTTP is a transport protocol that delivers data across the network. Web service applications usually run in the background and do not have a graphical user interface (GUI). Rather, web services interact via a service program interface (SPI). An SPI is defined strictly in terms of the messages that the web service accepts. Thus, a typical web service invocation consists of a first application (herein after referred to as the “service client”) sending an XML message, which is packaged in a SOAP “envelope,” across the network via HTTP to a second application (hereinafter referred to as the “service provider”). The format of the XML message, of course, must comply with the requirements of the service provider's SPI. Web service applications can perform a wide variety of functions, ranging from simple stock quote requests to complicated billing processes. A web service invocation has many common names, including a “service request,” a “request call,” or just a “call.” For the sake of simplicity and clarity, any communication between a service client and a service provider for invoking a service will be referred to here as a “service request.”
Generally, a business needs to control access to web services to maximize profit and to protect internal computing resources. In general, a business achieves control by requiring service requests to pass through a web service manager, which acts much like a firewall. A web service manager controls access on two levels: the service client level and the service agreement level. To gain access to the desired web service, a service client must first present credentials to the web service manager. The web service manager then must determine whether the credentials are authentic. If the credentials are authentic, the web service manager then determines whether the service client is entitled to receive the service that the service client requested. Finally, if the credentials are authentic and the service client is authorized to access the service provider, the web service manager authorizes the service provider to process the request.
Several methods of authentication are known in the art. The most conventional method requires each client to have a unique identifier (ID) and a password that only the client knows. Every time a client needs to access a service the client must present an ID and a password that the network service provider can match to the ID presented. Naturally, both the client and the network service provider must keep the password from being unduly disclosed or otherwise disseminated. Passwords must also be difficult to guess. To make passwords difficult to guess, many businesses implement complex security policies that require passwords to meet strict criteria and require clients to change passwords frequently.
Proprietary authentication methods, such as IBM's, WEB IDENTITY or TIVOLI ACCESS MANAGER, can also be used to control access to network services, but these methods are highly complex and require significant overhead.
Digital certificates are another alternative to the ID/password approach. Digital certificates are generally issued by a certification authority, which is typically a trusted third-party organization or company. Alternatively, digital certificates can be “self-signed.” A self-signed certificate is created by the holder of the certificate, but is still useful if the parties to a transaction are already familiar with each other and the integrity of the certificate is initially verified manually. A digital certificate is usually encrypted, and usually contains a holder's name or identifier, a serial number, and expiration date. X.509 is the most common digital certificate format, and is the format recommended by the International Telecommunications Union. The holder's name or identifier; is commonly represented as a Distinguished Name, which is a part of the X.500 standard (also promulgated by ITU). A Distinguished Name is comprised of a combination of other X.500 identifiers, which may include: a Common Name, an Organizational Unit, Organization, and Country.
Digital certificates obviate the need for passwords and provide significant advantages over the use of IDs and passwords. An obvious advantage is that users do not have to conjure up or remember complicated passwords. Furthermore, digital certificates obviate the need to implement complicated security policies to ensure that passwords are difficult to guess, and they reduce the risk of security corn promise through lost or exposed passwords.
Although the art of using digital certificates is not new, integrating digital certificate technology into existing technologies, particularly web service applications, is extremely challenging. In particular, many existing web service applications have been designed to authenticate users based on an ID that is typically embedded in the service request. Thus, existing web service applications do not generally recognize IDs that are encoded in a digital certificate. Therefore, a need exists for an authentication mechanism that can be integrated with existing web services technology while reaping the benefits of digital certificate technology.
Another problem that has arisen in the web services context is the malicious access and searching of databases. Typically, a malicious party is able to breach a firewall using access codes and other information which they are not authorized to use. In some circumstances, the malicious party has limited access within the firewall and attempts to access data repositories that he is not authorized to access. Once inside the firewall, the malicious party can search databases, hashtables, and other data structures at will because there are no further security features on the data structures. Such unauthorized access is not preferable. Consequently, a need exists for a security feature that will prevent a malicious party from searching a data repository when the malicious party gains access past the firewall.